﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NicoView.Model.Service
{
    /// <summary>
    /// ニコニコサービス情報の元になるオブジェクト
    /// </summary>
    public abstract class NicoServiceInfoBase : NicoViewObservableObject, INicoServiceInfo
    {





        protected internal abstract string Ab_Title
        {
            get;
            set;
        }

        public string Title
        {
            get { return Ab_Title; }
            set
            {
                if (Ab_Title == value) return;
                Ab_Title = value;
                RaisePropertyChanged("Title");
            }
        }

        protected internal abstract string Ab_Description
        {
            get;
            set;
        }

        public string Description
        {
            get { return Ab_Description; }
            set
            {
                if (Ab_Description == value) return;
                Ab_Description = value;
                RaisePropertyChanged("Description");
            }
        }

        protected internal abstract string Ab_CommunityId { get; set; }

        public string CommunityId
        {
            get { return Ab_CommunityId; }
            set
            {
                if (Ab_CommunityId == value) return;
                Ab_CommunityId = value;
                RaisePropertyChanged("CommunityId");
            }
        }

        protected internal abstract string Ab_Id { get; set; }

        public string Id
        {
            get { return Ab_Id; }
            set
            {
                if (Ab_Id == value) return;
                Ab_Id = value;
                RaisePropertyChanged("Id");
            }
        }

        protected internal abstract DateTime Ab_StartTime { get; set; }

        public DateTime StartTime
        {
            get { return Ab_StartTime; }
            set
            {
                if (Ab_StartTime == value) return;
                Ab_StartTime = value;
                RaisePropertyChanged("StartTime");
            }

        }

        protected internal abstract string Ab_ThumbnailImagePath { get; set; }

        public string ThumbnailImagePath
        {
            get { return Ab_ThumbnailImagePath; }
            set
            {
                if (Ab_ThumbnailImagePath == value) return;
                Ab_ThumbnailImagePath = value;
                RaisePropertyChanged("ThumbnailImagePath");
            }
        }


        public bool IsOwner { get; protected set; }


        public abstract TimeSpan EndElapsedTime { get; }


    }
}
